package com.epoque.common.service;

import java.util.List;

/**
 * 
 * @ClassName: BaseService
 * @Description: 基础服务类
 * @author qiuxianfeng
 * @date 2018年8月29日
 *
 * @param <T>
 */
public interface BaseService<T> {
    
	/**
	 * 
	 * @Title: selectOne
	 * @author qiuxianfeng
	 * @Description: 查询
	 * @param @param entity
	 * @param @return    参数
	 * @return T    返回类型
	 * @throws
	 */
    T selectOne(T entity);

    /**
     * 
     * @Title: selectById
     * @author qiuxianfeng
     * @Description: 通过Id查询
     * @param @param id
     * @param @return    参数
     * @return T    返回类型
     * @throws
     */
    T selectById(Object id);

    /**
     * 
     * @Title: selectListByIds
     * @author qiuxianfeng
     * @Description: 根据ID集合来查询
     * @param @param ids
     * @param @return    参数
     * @return List<T>    返回类型
     * @throws
     */
    //List<T> selectListByIds(List<Object> ids);

    /**
     * 
     * @Title: selectList
     * @author qiuxianfeng
     * @Description: 查询列表
     * @param @param entity
     * @param @return    参数
     * @return List<T>    返回类型
     * @throws
     */
    List<T> selectList(T entity);


    /**
     * 
     * @Title: selectListAll
     * @author qiuxianfeng
     * @Description: 获取所有对象
     * @param @return    参数
     * @return List<T>    返回类型
     * @throws
     */
    List<T> selectListAll();


    /**
     * 
     * @Title: selectCountAll
     * @author qiuxianfeng
     * @Description: 查询总记录数
     * @param @return    参数
     * @return Long    返回类型
     * @throws
     */
    //Long selectCountAll();

    /**
     * 
     * @Title: selectCount
     * @author qiuxianfeng
     * @Description: 查询总记录数
     * @param @param entity
     * @param @return    参数
     * @return Long    返回类型
     * @throws
     */
    Long selectCount(T entity);

    /**
     * 
     * @Title: insert
     * @author qiuxianfeng
     * @Description: 添加
     * @param @param entity    参数
     * @return void    返回类型
     * @throws
     */
    void insert(T entity);


    /**
     * 
     * @Title: insertSelective
     * @author qiuxianfeng
     * @Description: 插入 不插入null字段
     * @param @param entity    参数
     * @return void    返回类型
     * @throws
     */
    void insertSelective(T entity);

    /**
     * 
     * @Title: delete
     * @author qiuxianfeng
     * @Description: 删除
     * @param @param entity    参数
     * @return void    返回类型
     * @throws
     */
    void delete(T entity);

    /**
     * 
     * @Title: deleteById
     * @author qiuxianfeng
     * @Description: 根据Id删除
     * @param @param id    参数
     * @return void    返回类型
     * @throws
     */
    void deleteById(Object id);


    /**
     * 
     * @Title: updateById
     * @author qiuxianfeng
     * @Description: 根据id更新
     * @param @param entity    参数
     * @return void    返回类型
     * @throws
     */
    void updateById(T entity);


    /**
     * 
     * @Title: updateSelectiveById
     * @author qiuxianfeng
     * @Description: 不update null
     * @param @param entity    参数
     * @return void    返回类型
     * @throws
     */
    void updateSelectiveById(T entity);

    /**
     * 
     * @Title: deleteBatchByIds
     * @author qiuxianfeng
     * @Description: 根据ID集合批量删除
     * @param @param ids    参数
     * @return void    返回类型
     * @throws
     */
    //void deleteBatchByIds(List<Object> ids);


    /**
     * 
     * @Title: updateBatch
     * @author qiuxianfeng
     * @Description: 批量更新
     * @param @param entitys    参数
     * @return void    返回类型
     * @throws
     */
    //void updateBatch(List<T> entitys);
}
